package com.groovy.domain

import com.groovy.model.User
import groovy.json.JsonOutput
import groovy.json.JsonSlurper
import groovy.json.StringEscapeUtils
import org.junit.Test

class JsonTest {

    /**
     * 初始化数据
     * @return
     */
    def initData() {
        //init初始化数据
        def userArray = [
                new User(userId: System.currentTimeMillis(), userName: "周伯通", age: 90),
                new User(userId: System.currentTimeMillis(), userName: "瑛姑", age: 89)
        ]
        return userArray
    }

    /**
     * 创建Json数据
     */
    @Test
    void createJson() {

        //init初始化数据
        def userArray = initData()

        //转换成Json数据
        def json = JsonOutput.toJson(userArray)

        //格式化Json数据
        def prettyJson = JsonOutput.prettyPrint(json)

        //将Unicode转为中文
        def jsonText = StringEscapeUtils.unescapeJava(prettyJson)
        println(jsonText)

        //将中文转为Unicode
        //StringEscapeUtils.escapeJava(jsonText)
    }

    /**
     * 解析JSON数据
     */
    @Test
    void parseJson() {
        //init初始化数据
        def userArray = initData()

        //转换成Json数据
        def json = JsonOutput.toJson(userArray)

        //创建JsonSlurper
        def jsonSlurper = new JsonSlurper()

        //解析Json数据
        def parse = jsonSlurper.parseText(json)

        //循环输出解析出来的信息
        parse.findAll().forEach { owner ->
            //方法1
            //println(owner["userName"] + "," + owner["age"])

            //方法2，将数据转换成User对象
            def user = owner as User

            println("userId=${user.userId},userName=${user.userName},age=${user.age}")
        }
    }


}
